class Cat:
    __name='小猫'
    def print(self):
        print('私有方法')
        print(self.__name)

cat=Cat()
cat.print()
class Person:
    def __init__(self, name):
        self.name = name             # 姓名
        self.__age = 1               # 年龄，默认为1岁，私有属性
    # 设置私有属性值的方法
    def set_age(self, new_age):
        if 0 < new_age <= 120:      # 判断年龄是否合法
            self.__age = new_age
    # 获取私有属性值的方法
    def get_age(self):
        return self.__age

person = Person("小明")
person.set_age(20)
print(f"年龄为{person.get_age()}岁")

#单继承
class Cat(object):
    def __init__(self, color):
        self.color = color
    def walk(self):
        print("走猫步～")
# 定义继承Cat的ScottishFold类
class ScottishFold(Cat):
    pass
fold = ScottishFold("灰色")          # 创建子类的对象
print(f"{fold.color}的折耳猫")       # 子类访问从父类继承的属性
fold.walk()                                   # 子类调用从父类继承的方法


# 定义一个表示房屋的类 多继承
class House(object):
    def live(self):   						# 居住
        print("供人居住")
# 定义一个表示汽车的类
class Car(object):
    def drive(self):  						# 行驶
        print("行驶")
# 定义一个表示房车的类
class TouringCar(House, Car):
    pass
tour_car = TouringCar()
tour_car.live()   						# 子类对象调用父类House的方法
tour_car.drive()  						# 子类对象调用父类Car的方法

#重写
# 定义一个表示人的类
class Person(object):
    def say_hello(self):
        print("打招呼！")
# 定义一个表示中国人的类
class Chinese(Person):
    def say_hello(self):  					# 重写的方法
        print("吃了吗？")
chinese = Chinese()
chinese.say_hello()       					# 子类调用重写的方法

#多态
class Cat:
    def shout(self):
        print("喵喵喵~")
class Dog:
    def shout(self):
        print("汪汪汪！")
def shout(obj):
    obj.shout()
cat = Cat()
dog = Dog()
shout(cat)
shout(dog)


